﻿using PrismModule;
using PrismModule.ModuleA;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace PrismRegion.Base
{
    public class Startup : PrismBootstrapper
    {
        protected override DependencyObject CreateShell()
        {
            return Container.Resolve<MainWindow>();
        }

        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            //containerRegistry.RegisterForNavigation<ViewA>();
            //containerRegistry.RegisterForNavigation<ViewB>();
        }

        protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
        {
            // 注册模块
            // 第一种方式
            //moduleCatalog.AddModule<AModule>();

            // 第二种方式
            //moduleCatalog.AddModule(new ModuleInfo { 
            //    ModuleName= "AModule",
            //    ModuleType= typeof(AModule).AssemblyQualifiedName
            //});
        }

        
        // 通过相关配置文件生成Module信息 
        protected override IModuleCatalog CreateModuleCatalog()
        {
            // 第三种方式
            // App.config
            // 可以不用引用对应Module程序集
            //return new ConfigurationModuleCatalog();

            // 第四种方式
            // XML文件配置
            // 所有需要加载的Module程序集必须由当前程序集引用
            return new XamlModuleCatalog(".\\ModuleConfig.xml");

            // 第五种方式
            //return new DirectoryModuleCatalog()
            //{
            //    // 配置将要扫描的目录
            //    ModulePath =".\\ModulePath"
            //};
        }
    }
}
